home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / CopperPicture.s < prev    next >
Text File  |  1994-06-27  |  48KB  |  2,289 lines

  1. ;copperpicture
  2.  
  3. rout            ;when this is off, the routine-file will be
  4.             ;assembled, on=testing
  5.             
  6. ;debug            ;when this is on, colors in the background will
  7.             ;show how much time the routine needs.
  8.  
  9. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  10.  
  11. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  12.  
  13. routinemode    equ    1    ;the routinemode !
  14.  
  15.  
  16. ; VideoTracker AGA developer source 25-12-93
  17. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  18. ; wich makes low-resolution overscan a bit ugly.
  19. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  20.  
  21. ; the first part of the source handles the things that are necessary to
  22. ; show the picture/copper and playing of the routine.
  23. ; the part between the "***" lines is the routine-source.
  24. ; at the bottom of the file, there are the necessary incbin-files who
  25. ; are needed to test the routine.
  26. ; these are saved with "save effect" in videotracker. they are raw
  27. ; data files which can be fonts,pictures,landscapes,vectorobjects
  28. ; etcetra.
  29. ; the incbin-files are put in the "variables" table, in the routine-
  30. ; player-handler
  31. ; the place where it's done can be found by searching for "!!!"
  32.  
  33.     opt    a+    ;devpac 3 optimize
  34.     opt    o+
  35.  
  36. vew_wid    equ    44
  37. vew_hgt    equ    290
  38. win_hgt    equ    117
  39. win_str    equ    $1a
  40.  
  41.         ifd    ocs
  42. pic_wid        equ    4        ;wide in bytes
  43. pic_hgt        equ    6        ;hoogte
  44. pic_dpt        equ    8        ;number planes
  45. pic_ani        equ    10        ;aantal effes (anim)
  46. pic_vew        equ    12        ;viewmode
  47. pic_cycstr    equ    14        ;cycle start (*4)
  48. pic_cycend    equ    15        ;cycle end (*4)
  49. pic_cycspd    equ    16        ;cycle speed (*4)
  50. pic_cycadd    equ    17        ;cycle add (*4)
  51. pic_palnum    equ    30        ;aantal kleuren
  52. pic_pal        equ    32        ;palette start
  53. pic_palsiz    equ    256*2        ;vaste palette size
  54. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  55.         endc
  56.         
  57.         ifnd    ocs
  58. pic_wid        equ    4        ;wide in bytes
  59. pic_hgt        equ    6        ;hoogte
  60. pic_dpt        equ    8        ;number planes
  61. pic_ani        equ    10        ;aantal effes (anim)
  62. pic_vew        equ    12        ;viewmode
  63. pic_cycstr    equ    14        ;cycle start (*8)
  64. pic_cycend    equ    15        ;cycle end (*8)
  65. pic_cycspd    equ    16        ;cycle speed (*8)
  66. pic_cycadd    equ    17        ;cycle add (*8)
  67. pic_widmod    equ    46        ;animation-width modulo
  68. pic_future    equ    50        ;free future space
  69. pic_palnum    equ    62        ;aantal kleuren
  70. pic_pal        equ    64        ;palette start
  71. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  72. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  73.         endc
  74.         
  75. var_len        equ    $300        ;lengte vartabel
  76.  
  77. var__GfxBase    equ    $000        ;graphics lib
  78. var_pic1    equ    $004        ;current picture
  79. var_anispd1    equ    $008        ;animspeed
  80. var_anitel1    equ    $00c        ;animcount
  81. var_cprbck    equ    $010        ;copperback
  82. var_bck        equ    $014        ;background
  83. var_pic2    equ    $018        ;current picture
  84. var_ntsc    equ    $01c        ;ntsc/pal frequence
  85. var_lnd        equ    $020        ;landscape
  86. var_anilop1    equ    $024
  87. var_rottrg    equ    $028        ;effect trigger
  88. var_txt1    equ    $040        ;text
  89. var_txt16    equ    15*4+var_txt1
  90. var_vec1    equ    $080        ;vectors
  91. var_vec16    equ    15*4+var_vec1
  92. var_fon1    equ    $0c0        ;fonts
  93. var_fon16    equ    15*4+var_fon1
  94. var_cols1    equ    $100        ;colorsets
  95. var_cols16    equ    15*4+var_cols1
  96. var_obj1    equ    $180        ;objects
  97. var_obj16    equ    15*4+var_obj1
  98.  
  99.     ifd    rout
  100.     ;videotracker routine-test
  101.  
  102.     incdir    "w:include/"
  103.     include    "exec/types.i"
  104.     include    "graphics/gfxbase.i"
  105.     include    "lvo/graphics_lib.i"
  106.     incdir    'videotracker:effect/'
  107.  
  108.     SECTION    1,CODE_C
  109. tus
  110.     lea    var,a0
  111.     move.l    #rotsrc,curpic1        ;picture !!!
  112.     move.l    #rotsrc,curpal1        ;palette !!!
  113.     move.l    #rotset,var_cols1(a0)    ;colorset !!!
  114.  
  115.     move.l    ($4).w,a6
  116.     sub.l    a1,a1
  117.     jsr    -$126(a6)        ;findtask
  118.     move.l    d0,curtsk
  119.     move.l    d0,a0
  120.     move.l    $b8(a0),tskpri
  121.  
  122.     lea    dosnam,a1        ;doslib openen
  123.     moveq.l    #0,d0
  124.     move.l    (4).w,a6
  125.     jsr    -408(a6)        ;openlib
  126.     move.l    d0,doslib
  127.  
  128.     bsr.s    label5            ;videotracker opstarten
  129.     
  130.     move.l    curtsk,a0
  131.     move.l    tskpri,$b8(a0)
  132.     move.l    ($4).w,a6
  133.     jsr    -$84(a6)        ;forbid
  134.  
  135.     move.l    doslib,a1
  136.     move.l    (4).w,a6
  137.     jsr    -414(a6)        ;closelib
  138.  
  139.     moveq.l    #0,d0
  140.     rts
  141.     
  142. label5
  143.     move.l    (4).w,a6        ;workbench gedoe
  144.  
  145.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  146.  
  147.     ifd    ntsctest
  148.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  149.     endc
  150.  
  151.     cmp.b    #50,ntscmode        ;ntsc ?
  152.     beq.s    str.ntsc
  153.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  154. str.ntsc
  155.  
  156.     lea    cprjmp,a2        ;copjmp zetten !
  157.     move.l    #cprbck-8,d0
  158.     move.w    d0,6(a2)
  159.     swap    d0
  160.     move.w    d0,2(a2)
  161.  
  162.     lea    cprbck-8,a2        ;copstr zetten !
  163.     move.l    #cpr,d0
  164.     move.w    d0,6(a2)
  165.     swap    d0
  166.     move.w    d0,2(a2)
  167.  
  168.     bsr    cprsprrem        ;sprites legen
  169.  
  170.     lea    gfxnam,a1        ;graphics lib openen
  171.     move.l    (4).w,a6
  172.     jsr    -408(a6)        ;openlib
  173.     move.l    d0,a6
  174.     move.l    d0,gfxlib
  175.     move.l    38(a6),oldcprlist
  176.  
  177.     bset    #1,$bfe001
  178.     bsr    copbuf            ;copper vullen
  179.  
  180.     bsr    sysoff
  181.  
  182. gadrun
  183.     btst    #6,($bfe001).l
  184.     bne    gadrun
  185.  
  186. scrend
  187. scrend.play
  188.     bsr    syson
  189.  
  190.     move.l    gfxlib,a1
  191.     move.l    (4).w,a6
  192.     jsr    -414(a6)        ;closelib
  193.  
  194. scrend.qb
  195.     moveq.l    #0,d0    
  196.     rts
  197.     
  198.     ;vertical blank interrupt, no blits.
  199.     ;handles counters,interlace,sprite
  200.     ;level 3
  201.  
  202. intvb
  203.     bra.s    intvb.cnt
  204.     dc.l    'VIDU'
  205.     dc.l    'LOOP'
  206. intvb.cnt
  207.     movem.l    d0-d7/a0-a6,-(sp)
  208.     lea    ($dff000).l,a6
  209.  
  210.     move.w    $01e(a6),d0
  211.     btst    #5,d0            ;vblank ?
  212.     bne.s    intvb.vb
  213.  
  214.     bra.s    intcop.end
  215.  
  216. intvb.vb
  217.     bsr    grap
  218.     bsr    palctr            ;palette zetten
  219.     bsr.s    copbuf            ;copper vullen
  220.     
  221. intvb.end
  222.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  223.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  224.     rte
  225.  
  226. intcop.end
  227.     movem.l    (sp)+,d0-d7/a0-a6
  228.     move.l    intvbold,-(sp)
  229.     rts
  230.  
  231.     ;transmission buffer empty routine, BLIT !
  232.     ;handles routines,animations
  233.     
  234. inttbe                    ;tbe interrupt
  235.     movem.l    d0-d7/a0-a6,-(sp)
  236.     lea    ($dff000).l,a6
  237.  
  238.     move.w    $01e(a6),d0
  239.     btst    #0,d0            ;no tbe ?
  240.     beq.s    intdskblk
  241.  
  242.  
  243.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  244.     beq.s    inttbe.cop
  245.     btst    #2,($dff016).l
  246.     beq.s    inttbe.cop
  247.  
  248.     ifd    debug
  249.     move.w    #$700,$dff180
  250.     endc
  251.     
  252.     bsr    rotply            ;routineplayer BLIT !
  253.     bsr.s    copbuf            ;copper vullen
  254.  
  255.     ifd    debug
  256.     move.w    #$070,$dff180
  257.     endc
  258.     
  259. inttbe.cop
  260.  
  261. inttbe.end
  262.     move.w    #$0001,$09c(a6)
  263.     movem.l    (sp)+,d0-d7/a0-a6
  264.     rte
  265.  
  266. intdskblk
  267.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  268.     movem.l    (sp)+,d0-d7/a0-a6
  269.     move.l    inttbeold,-(sp)
  270.     rts
  271.  
  272.  
  273.     ;moves the copperbuffer to the copperlist
  274.     ;sort of double buffering
  275.     
  276. copbuf
  277.     movem.l    d0-d7/a0-a6,-(sp)
  278.  
  279.     lea    ($dff000).l,a6
  280.  
  281. copbuf.novb                ;copperchange overslaan
  282.     moveq.l    #0,d0
  283.     move.b    $005(a6),d0
  284.     lsl.w    #8,d0
  285.     moveq.l    #0,d1
  286.     move.b    $006(a6),d1
  287.     add.w    d1,d0
  288.  
  289.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  290.     blt    copbuf.novb
  291.  
  292.     cmp.b    #50,ntscmode
  293.     beq.s    copbuf.pal
  294.     cmp.w    #$133-72-8,d0        ;ntsc grens
  295.     bge    copbuf.novb
  296.     bra.s    copbuf.cont
  297. copbuf.pal
  298.     cmp.w    #$133-8,d0        ;pal grens
  299.     bge    copbuf.novb
  300. copbuf.cont
  301.  
  302.     lea    gra.s,a0        ;buffer copieren
  303.     lea    cprbuf,a1
  304. copbuf_aga                ;AGA stuff :)
  305.     move.l    #(gra.ql)/4-1,d0
  306. copbuf.a
  307.     move.w    2(a0),2(a1)
  308.     add.l    #4,a0
  309.     add.l    #4,a1
  310.     dbra    d0,copbuf.a
  311.  
  312. copbuf.end
  313.     movem.l    (sp)+,d0-d7/a0-a6
  314.     rts
  315.  
  316.     ;goes back to the workbench
  317.     
  318. syson
  319.     movem.l    d0-d7/a0-a6,-(sp)
  320.  
  321.     move.w    #$0001,$dff09a        ;tbeint uit
  322.     move.l    intvbold,($6c).w
  323.     move.l    inttbeold,($64).w
  324.  
  325.     move.l    4,a6
  326.     jsr    -138(a6)        ;permit
  327.  
  328.     move.l    gfxlib,a6
  329.     jsr    -462(a6)        ;disownblitter
  330.  
  331.     move.l    wbview,a1
  332.     move.l    gfxlib,a6
  333.     jsr    _LVOLoadView(a6)     ; Fix view
  334.     jsr    _LVOWaitTOF(a6)
  335.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  336.  
  337. syson.ras
  338.     cmp.b    #$c0,$dff006        ;prevent copperjump
  339.     bne    syson.ras
  340.  
  341.     move.l    gfxlib,a6
  342.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  343.  
  344.     movem.l    (sp)+,d0-d7/a0-a6
  345.     rts
  346.     
  347.     ;goes back to the gadgetscreen
  348.     
  349. sysoff
  350.     movem.l    d0-d7/a0-a6,-(sp)
  351.      
  352.     move.l    gfxlib,a6
  353.     move.l    gb_ActiView(a6),wbview    ;current view
  354.     sub.l    a1,a1            ; clear a1
  355.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  356.     jsr    _LVOWaitTOF(a6)     ; Wait once
  357.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  358.  
  359.     move.l    gfxlib,a6
  360.     jsr    -456(a6)        ;ownblitter
  361.  
  362.     move.l    4,a6
  363.     jsr    -132(a6)        ;forbid
  364.         
  365.     move.l    ($6c).w,intvbold
  366.     move.l    #intvb,($6c).w
  367.     move.l    ($64).w,inttbeold
  368.     move.l    #inttbe,($64).w
  369.     move.w    #$8001,$dff09a        ;tbeint aan
  370.     bsr    gracpr            ;reset copper
  371.     bsr    copbuf            ;copy copper
  372.     move.l    #cpr,$dff080
  373.  
  374.     movem.l    (sp)+,d0-d7/a0-a6
  375.     rts
  376.     
  377. cprsprrem
  378.     movem.l    d0-d7/a0-a6,-(sp)
  379.     lea    cprspr,a0
  380.     move.l    #sprdat,d0
  381.     move.w    #7,d1
  382. cprsprrem.a
  383.     move.w    d0,3*2(a0)
  384.     swap    d0
  385.     move.w    d0,1*2(a0)
  386.     swap    d0
  387.     add.l    #8,a0
  388.     dbra    d1,cprsprrem.a
  389.     movem.l    (sp)+,d0-d7/a0-a6
  390.     rts
  391.  
  392. varset                    ;variablen neerzetten
  393.     movem.l    d0-d7/a0-a6,-(sp)
  394.     move.l    #var,a0
  395.  
  396.     move.l    #cprbck,var_cprbck(a0)
  397.     move.l    gfxlib,var__GfxBase(a0)
  398.     move.b    ntscmode,var_ntsc(a0)
  399.  
  400.     move.l    curpic1,var_pic1(a0)    ;variabel
  401.     move.l    curpic2,var_pic2(a0)    ;variabel
  402.     move.w    anispd1,var_anispd1(a0)
  403.     move.w    anitel1,var_anitel1(a0)
  404.     move.b    anilop1,var_anilop1(a0)
  405.     move.l    #rottrg,var_rottrg(a0)
  406.     movem.l    (sp)+,d0-d7/a0-a6
  407.     rts
  408.     
  409.     ;this routine handles all videotracker-routines
  410.  
  411. rotply    
  412.     movem.l    d0-d7/a0-a6,-(sp)
  413.  
  414.     moveq.l    #0,d0
  415.  
  416.     lea    currot1,a2        ;routine 1
  417.     move.w    rotinf1,d0        ;routine info
  418.     bsr.s    rotplyr
  419.  
  420. rotply.end
  421.     movem.l    (sp)+,d0-d7/a0-a6
  422.     rts
  423.  
  424.     ;this routine handles 1 routine, BLIT !
  425.     
  426. rotplyr
  427.     movem.l    d0-d7/a1-a6,-(sp)
  428.  
  429.     move.l    #rot,(a2)        ;routinestart address
  430.  
  431. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  432.     clr.l    curpic2            ;background picture
  433.     move.w    #1,anispd1        ;animationspeed
  434.     clr.w    anitel1            ;animation position
  435.  
  436.     lea    var,a0            ;communication-table
  437.  
  438.     move.b    #0,anilop1        ;animloop off/on !!!
  439.     move.w    #32,anispd1        ;animdelay !!!
  440.     move.l    #routinemode,d0        ;routinemode !!!
  441.  
  442.     sub.l    a0,a0            ;picture info legen
  443.  
  444.     tst.l    (a2)            ;is er een routine ?
  445.     beq    rotplyr.end        ;interlace handling
  446.  
  447.     move.l    intdel,d2        ;delay
  448.     move.l    inttel,d1        ;teller
  449.     cmp.w    d2,d1
  450.     blt    rotplyr.end
  451.     clr.l    inttel
  452.                 
  453.     bsr    varset            ;variabelen updaten
  454.  
  455.     move.l    (a2),a1            ;routine halen
  456.     move.l    #var,a0            ;variablen tabel
  457.  
  458.     movem.l    d3-d7/a1-a6,-(sp)
  459.     moveq.l    #0,d1            ;vars wissen
  460.     moveq.l    #0,d2
  461.     moveq.l    #0,d3
  462.     moveq.l    #0,d4
  463.     moveq.l    #0,d5
  464.     moveq.l    #0,d6
  465.     moveq.l    #0,d7
  466.     sub.l    a2,a2
  467.     sub.l    a3,a3
  468.     sub.l    a4,a4
  469.     sub.l    a5,a5
  470.  
  471.     jsr    4(a1)            ;routine afwerken
  472.     movem.l    (sp)+,d3-d7/a1-a6
  473.  
  474.     ;Routine:
  475.     ;
  476.     ;Input:
  477.     ;a0=variabelentabel
  478.     ;d0=routinemode
  479.     ;
  480.     ;Output:
  481.     ;a0=picture
  482.     ;d1=copperlist
  483.     ;d2=interruptdelay        (NOT used till now)
  484.     
  485.     move.w    #$0020,$dff09a        ;vb off !
  486.  
  487.     move.l    d2,intdel        ;delay
  488.  
  489.     lea    cprjmp,a3
  490.     move.l    #cprbck-8,d0
  491.  
  492.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  493.     bne.s    rotplyr.nocop
  494.     tst.l    d1            ;copperlist ?
  495.     beq.s    rotplyr.nocop
  496.     move.l    d1,d0
  497. rotplyr.nocop
  498.     move.w    d0,6(a3)
  499.     swap    d0
  500.     move.w    d0,2(a3)
  501.  
  502.     cmp.l    #0,a0            ;picture ?
  503.     beq.s    rotplyr.endvb
  504.  
  505.     move.l    a0,curpic1        ;current picture (cycle)
  506.     move.l    a0,curpal1        ;current palette
  507.  
  508.     tst.b    rotdpl            ;plane is geleverd
  509.     beq.s    rotplyr.set
  510.     clr.b    rotdpl
  511.     clr.l    cycdel1            ;cycle info wissen
  512.     clr.l    4+cycdel1
  513.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  514. rotplyr.set
  515.     clr.b    dplctr
  516.     bsr.s    grap
  517.     bsr    grac            ;colorset
  518. rotplyr.endvb
  519.     move.w    #$8020,$dff09a
  520. rotplyr.end
  521.     movem.l    (sp)+,d0-d7/a1-a6
  522.     rts
  523.  
  524.     ;removes possible routine-coppers
  525.     
  526. gracpr
  527.     movem.l    d0-d7/a0-a6,-(sp)
  528.     lea    cprjmp,a3
  529.     move.l    #cprbck-8,d0        ;copperlist resetten
  530.     move.w    d0,6(a3)
  531.     swap    d0
  532.     move.w    d0,2(a3)
  533.     movem.l    (sp)+,d0-d7/a0-a6
  534.     rts
  535.  
  536. grap                    ;d7=anim
  537.     movem.l    d0-d7/a0-a6,-(sp)
  538.  
  539.     clr.l    d7
  540.  
  541.     tst.l    curpic1            ;current picture ?
  542.     beq    grap.end
  543.  
  544.     move.l    curpic1,a2        ;normal pic halen
  545.  
  546.     lea    gracprscr,a1        ;window neerzetten
  547.     move.l    hogscr,d1
  548.  
  549.     move.w    pic_hgt(a2),d3        ;pic hoogte
  550.     move.w    pic_vew(a2),d5
  551.     btst    #2,d5            ;interlace ?
  552.     beq.s    grap.nohi4
  553.     lsr.w    #1,d3            ;/2
  554. grap.nohi4
  555.     cmp.w    d3,d1
  556.     bge.s    grap.hog
  557.     move.w    d1,d3
  558. grap.hog
  559.     sub.w    d3,d1
  560.     lsr.w    #1,d1
  561.     add.w    #win_str,d1
  562.     move.w    d1,d2
  563.     add.w    d3,d2
  564.  
  565.     move.b    d1,2(a1)        ;y start
  566.     move.b    d2,6(a1)        ;y end
  567.  
  568.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  569.     lsl.l    #3,d4
  570.  
  571.     move.l    #vew_wid*8,d0
  572.     move.l    #0,d1
  573.     move.l    #$61,d6
  574.  
  575.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  576.     ble.s    grap.noov1
  577.     move.l    #$41,d6
  578. grap.noov1
  579.  
  580.     move.w    pic_vew(a2),d5
  581.     btst    #15,d5            ;hires ?
  582.     beq.s    grap.nohi2
  583.  
  584.     move.l    #(vew_wid)*8*2,d0
  585.     move.l    #1,d1
  586.     move.l    #$61,d6
  587.  
  588.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  589.     ble.s    grap.nohi2
  590.     move.l    #(vew_wid)*8*2,d0
  591.     move.l    #$51,d6
  592.  
  593.     bra.s    grap.noshi2
  594. grap.nohi2    
  595.     btst    #6,d5            ;super hires ?
  596.     beq.s    grap.noshi2
  597.  
  598.     move.l    #(vew_wid)*8*4,d0
  599.     move.l    #2,d1
  600.     move.l    #$61,d6
  601.  
  602.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  603.     ble.s    grap.noshi2
  604.     move.l    #(vew_wid)*8*4,d0
  605.     move.l    #$51,d6
  606.  
  607. grap.noshi2    
  608.  
  609.     clr.w    d5
  610.     cmp.w    d0,d4            ;breeder dan scherm ?
  611.     ble.s    grap.c
  612.     move.w    d4,d5
  613.     move.w    d0,d4
  614.     sub.w    d0,d5            ;modulo
  615.     lsr.w    #3,d5            ;/8
  616. grap.c
  617.     lsr.w    d1,d0
  618.     lsr.w    d1,d4
  619.  
  620.     move.w    d0,d2
  621.     sub.w    d4,d2
  622.     lsr.w    #1,d2            ;/2
  623.  
  624.     add.w    d6,d2
  625.     move.b    d2,3(a1)        ;x start
  626.     move.w    d2,d3            ;d3 bewaren !
  627.  
  628.     add.w    d4,d2            ;d4 bewaren !
  629.     move.b    d2,7(a1)        ;x end
  630.     
  631.     move.w    pic_vew(a2),d6
  632.     btst    #15,d6            ;hires ?
  633.     beq.s    grap.nohi5    
  634.     add.l    d4,d4            ;*2
  635.     bra.s    grap.noshi5
  636. grap.nohi5
  637.     btst    #6,d6            ;super hires ?
  638.     beq.s    grap.noshi5    
  639.     add.l    d4,d4            ;*4
  640.     add.l    d4,d4
  641. grap.noshi5
  642.  
  643.     move.l    d7,-(sp)
  644.     move.w    pic_vew(a2),d6
  645.     move.l    #17,d0
  646.     move.l    #4,d1            ;ecs 1
  647.     move.l    #3,d7
  648.  
  649.     btst    #15,d6            ;hires ?
  650.     beq.s    grap.nohi3    
  651.     move.l    #17,d0            ;ecs 9
  652.     move.l    #4,d1            ;ecs 2
  653.     move.l    #2,d7
  654.     bra.s    grap.noshi3
  655. grap.nohi3
  656.     btst    #6,d6            ;super hires ?
  657.     beq.s    grap.noshi3    
  658.     move.l    #17,d0            ;ecs 9
  659.     move.l    #4,d1            ;ecs 2
  660.     move.l    #1,d7
  661. grap.noshi3
  662.     sub.w    d0,d3
  663.     lsr.w    #1,d3
  664.     move.w    d3,10(a1)        ;ddfstrt
  665.     
  666.     move.w    d4,d2            ;pic breedte in pixels
  667.     lsr.w    #4,d2            ;/16
  668.     sub.w    d1,d2            ;-1
  669.  
  670.     lsl.w    d7,d2            ;*8
  671.     add.w    d2,d3
  672.     move.w    d3,14(a1)        ;ddfstop
  673.     move.l    (sp)+,d7
  674.     
  675.     lea    pic_raw(a2),a0
  676.  
  677.     moveq.l    #0,d2
  678.     move.w    pic_dpt(a2),d2
  679.     sub.l    #1,d2
  680.     muls    pic_wid(a2),d2
  681.     add.w    d2,d5
  682.  
  683.     move.w    pic_vew(a2),d2        ;viewmode add
  684.     btst    #2,d2
  685.     beq.s    grap.nolace4
  686.  
  687.     moveq.l    #0,d2
  688.     move.w    pic_dpt(a2),d2
  689.     muls    pic_wid(a2),d2
  690.     add.w    d2,d5            ;interlace gedoe
  691. grap.nolace4
  692.  
  693.     lea    gracprbpl,a4        ;iffpln neerzetten
  694.     lea    gracprpln,a0        ;iffpln neerzetten
  695.     moveq.l    #0,d2
  696.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  697.     move.l    #8,d6            ;copper step !
  698.  
  699.     tst.l    curpic2            ;2de picture ?
  700.     bne.s    grap.pic2
  701. grap.nopic2
  702.     move.w    d5,34(a1)        ;modulo oneven zetten
  703.     bra    grap.nodpl
  704. grap.pic2
  705.     move.l    curpic2,a3        ;oneven plane
  706.     move.l    curpic2+4,a6        ;oneven plane
  707.     move.l    currot2,a5        ;oneven plane
  708.     clr.l    curpic2            ;mischien niet goed
  709.     clr.l    curpic2+4        ;mischien niet goed
  710.     clr.l    curpal2            ;mischien niet goed
  711.     clr.l    currot2            ;mischien niet goed
  712.  
  713.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  714.     beq.s    grap.nopic2
  715.     
  716.     cmp.l    #0,currot1        ;routine ?    
  717.     beq.s    grap.norot
  718.     cmp.l    currot1,a5        ;routine hetzelfde ?
  719.     beq.s    grap.nopic2
  720. grap.norot
  721.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  722.     bgt    grap.nopic2
  723.  
  724.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  725.     cmp.b    d2,d3            ;gelijke plnummers ?
  726.     bne.s    grap.nopic2
  727.     move.w    pic_vew(a2),d1
  728.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  729.     bne.s    grap.nopic2
  730.  
  731.     move.w    pic_vew(a2),d1        ;groter dan view test
  732.     btst    #6,d1            ;super hires ?
  733.     beq.s    grap.nohi2a
  734.     move.l    #vew_wid*4,d1
  735.     bra.s    grap.nohi2b
  736. grap.nohi2a
  737.     btst    #15,d1            ;hires ?
  738.     beq.s    grap.noshi2a
  739.     move.l    #vew_wid*2,d1
  740.     bra.s    grap.nohi2b
  741. grap.noshi2a
  742.     move.l    #vew_wid,d1
  743. grap.nohi2b
  744.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  745.     bgt.s    grap.small
  746.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  747.     bgt.s    grap.small
  748.  
  749.     move.w    pic_vew(a2),d1
  750.     btst    #2,d1
  751.     beq.s    grap.nolace8a
  752.     move.l    hogscr,d1
  753.     add.l    d1,d1
  754.     bra.s    grap.nolace8b
  755. grap.nolace8a
  756.     move.l    hogscr,d1
  757. grap.nolace8b
  758.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  759.     bgt.s    grap.small
  760.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  761.     bgt.s    grap.small
  762.     bra.s    grap.big
  763.  
  764. grap.small
  765.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  766.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  767.     bne    grap.nopic2
  768.     move.w    pic_wid(a2),d1
  769.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  770.     bne    grap.nopic2
  771.  
  772. grap.big
  773.     move.l    a3,curpic2        ;toch wel goed !
  774.     move.l    a6,curpic2+4
  775.     move.l    a3,curpal2
  776.     move.l    a5,currot2
  777.  
  778.     tst.b    dplctr            ;dual playfield al gezet ?
  779.     beq    grap.nocop
  780.  
  781.     move.w    30(a1),34(a1)        ;modulo copieren
  782.  
  783.     move.w    2(a4),d1        ;bplcon0
  784.     btst    #10,d1            ;al dual playfield ?
  785.     beq.s    grap.ta
  786.  
  787.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  788.     move.w    6(a0),14(a0)
  789.  
  790.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  791.     move.w    22(a0),30(a0)
  792.  
  793.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  794.     move.w    38(a0),46(a0)
  795.  
  796.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  797.     move.w    54(a0),62(a0)
  798.  
  799.     bra.s    grap.tb
  800. grap.ta
  801.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  802.     move.w    28(a0),62(a0)
  803.  
  804.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  805.     move.w    22(a0),46(a0)
  806.  
  807.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  808.     move.w    14(a0),30(a0)
  809.  
  810.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  811.     move.w    6(a0),14(a0)
  812.  
  813. grap.tb
  814.     move.l    #palette,a3        ;palette copieren
  815.  
  816.     move.w    #16-1,d1
  817. grap.pal
  818.     move.l    (a3)+,60(a3)
  819.     dbra    d1,grap.pal
  820.  
  821. grap.nocop
  822.     add.w    d3,d2            ;aantal bitplanes
  823.     cmp.w    #8,d2            ;8 bitplanes ?
  824.     blt    grap.no8planes2
  825.     move.w    #%10000,d2        ;only bit 4
  826.     bra    grap.8planes2
  827. grap.no8planes2
  828.     lsl.w    #8,d2
  829.     lsl.w    #4,d2
  830. grap.8planes2
  831.     or.w    #$400,d2        ;dual playfield aan
  832.     move.w    d2,2(a4)        ;bplcon0
  833.  
  834.     movem.l    d0-d7/a0-a6,-(sp)
  835.  
  836.     move.l    curpic,a2        ;animpic ?
  837.     move.l    curfrm,d7
  838.     cmp.l    #0,a2
  839.     bne.s    grap.noanipic
  840.  
  841.     move.l    curpic2,a2        ;normal pic ?
  842.     move.l    curfrm2,d7
  843.     cmp.l    #0,a2
  844.     beq.s    grap.nodplpic
  845.  
  846. grap.noanipic
  847.     add.l    d6,a0
  848.     add.w    d6,d6
  849.     bsr.s    grappln            ;a2,d6,d7,d0
  850. grap.nodplpic
  851.     movem.l    (sp)+,d0-d7/a0-a6
  852.     add.w    d6,d6
  853.     bra.s    grap.nodpla
  854.  
  855.  
  856. grap.nodpl                ;geen dual playfield
  857.     cmp.w    #8,d2            ;8 bitplanes ?
  858.     blt    grap.no8planes
  859.     move.w    #%10000,d2        ;only bit 4
  860.     bra    grap.8planes
  861. grap.no8planes
  862.     lsl.w    #8,d2
  863.     lsl.w    #4,d2
  864. grap.8planes
  865.     move.w    d2,2(a4)        ;bplcon0
  866.  
  867. grap.nodpla
  868.     move.w    d5,30(a1)        ;modulo even
  869.  
  870.     moveq.l    #0,d3
  871.     add.w    pic_vew(a2),d3        ;viewmode add
  872.     moveq.l    #0,d2
  873.     move.w    2(a4),d2
  874.     or.l    d3,d2
  875.  
  876.     ifd    gui
  877.     tst.b    genlck
  878.     bne    grap.genset
  879.     endc
  880.  
  881.     or.l    #$100,d2        ;genlock off ($302)
  882.  
  883.     ifd    gui
  884.     bra    grap.gencont
  885. grap.genset
  886.     or.l    #$102,d2        ;genlock on ($302)
  887. grap.gencont
  888.     endc
  889.     
  890.     move.w    d2,2(a4)
  891.     
  892.     bsr.s    grappln            ;a2,d6,d7,d0
  893.  
  894. grap.end
  895.     
  896.     movem.l    (sp)+,d0-d7/a0-a6
  897.     rts
  898.         
  899.  
  900.     ;sets on of the 2 possible pictures to the copper
  901.     ;handles interlace
  902.  
  903.     ;d7=framenummer
  904.     ;d6=copperliststap
  905.     ;d0=raw planes positie
  906.     ;a2=current picture
  907. grappln                    ;planes invullen 
  908.     movem.l    d0-d7/a0-a6,-(sp)
  909.  
  910.     lea    pic_raw(a2),a1
  911.     move.l    a1,d0            ;raw planes
  912.     
  913.     moveq.l    #0,d2            ;x*y
  914.     move.w    pic_wid(a2),d2
  915.     lsr.l    #1,d2            ;/2
  916.     moveq.l    #0,d3
  917.     move.w    pic_hgt(a2),d3
  918.     muls    d3,d2
  919.     
  920.     move.l    d2,d4
  921.     add.l    d2,d2
  922.  
  923.     move.w    pic_dpt(a2),d3
  924.     muls    d3,d4            ;hele picture size
  925.     muls    d7,d4            ;frame*size d7 !!!
  926.  
  927.     add.l    d4,d4
  928.  
  929.     add.l    d4,d0
  930.  
  931.     move.l    #vew_wid,d5        ;max x view
  932.     move.l    hogscr,d4        ;max y view
  933.     move.w    pic_vew(a2),d1        ;viewmode add
  934.     btst    #2,d1
  935.     beq.s    grappln.nolace
  936.     add.l    d4,d4            ;max y view
  937. grappln.nolace
  938.     btst    #15,d1            ;hires ?
  939.     beq.s    grappln.nohi
  940.     move.l    #vew_wid*2,d5        ;max x view
  941.     bra.s    grappln.noshi
  942. grappln.nohi
  943.     btst    #6,d1            ;super hires ?
  944.     beq.s    grappln.noshi
  945.     move.l    #vew_wid*4,d5        ;max x view
  946. grappln.noshi
  947.  
  948.     moveq.l    #0,d3            ;scherm centreren
  949.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  950.     cmp.w    d5,d3            ;breder dan scherm ?
  951.     ble.s    grappln.qa
  952.     sub.w    d5,d3            ;-scherm breedte
  953.     lsr.w    #2,d3            ;/4
  954.  
  955.     add.l    d3,d3
  956.  
  957.     add.l    d3,d0
  958. grappln.qa
  959.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  960.     cmp.w    d4,d3            ;hoger dan scherm ?
  961.     ble.s    grappln.qb
  962.     sub.w    d4,d3            ;-scherm breedte
  963.     lsr.w    #1,d3            ;/2
  964.     moveq.l    #0,d5
  965.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  966.     muls    pic_dpt(a2),d5
  967.     muls    d5,d3
  968.     add.l    d3,d0
  969. grappln.qb
  970.     moveq.l    #0,d2
  971.     move.w    pic_wid(a2),d2
  972.  
  973.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  974.     btst    #2,d5
  975.     beq.s    grappln.nolac7b
  976.  
  977.     move.w    $04(a6),d5        ;even/oneven ?
  978.     btst    #15,d5
  979.     beq.s    grappln.nolac7b
  980.     
  981.     moveq.l    #0,d3
  982.     move.w    pic_wid(a2),d3
  983.     muls    pic_dpt(a2),d3
  984.     add.l    d3,d0
  985. grappln.nolac7b
  986.  
  987.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  988.     tst.w    d1            ;0 planes ?
  989.     beq    grappln.end
  990.     sub.w    #1,d1
  991. grappln.a
  992.     move.w    d0,3*2(a0)
  993.     swap    d0
  994.     move.w    d0,1*2(a0)
  995.     swap    d0
  996.     add.l    d6,a0            ;d6=copper step !
  997.     add.l    d2,d0
  998.     dbra    d1,grappln.a
  999.  
  1000.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1001.     bne    grappln.noham8
  1002.     btst    #3,pic_vew(a2)        ;ham ?
  1003.     beq    grappln.noham8
  1004.  
  1005.     move.w    -14(a0),d0        ;get 6
  1006.     move.w    -10(a0),d1
  1007.     move.w    -6(a0),d2        ;get 7
  1008.     move.w    -2(a0),d3
  1009.     move.w    -18(a0),-2(a0)        ;5>7
  1010.     move.w    -22(a0),-6(a0)        ;5>7
  1011.     move.w    -26(a0),-10(a0)        ;4>6
  1012.     move.w    -30(a0),-14(a0)        ;4>6
  1013.     move.w    -34(a0),-18(a0)        ;3>5
  1014.     move.w    -38(a0),-22(a0)        ;3>5
  1015.     move.w    -42(a0),-26(a0)        ;2>4
  1016.     move.w    -46(a0),-30(a0)        ;2>4
  1017.     move.w    -50(a0),-34(a0)        ;1>3
  1018.     move.w    -54(a0),-38(a0)        ;1>3
  1019.     move.w    -58(a0),-42(a0)        ;0>2
  1020.     move.w    -62(a0),-46(a0)        ;0>2
  1021.     move.w    d0,-62(a0)        ;6>0
  1022.     move.w    d1,-58(a0)        ;6>0
  1023.     move.w    d2,-54(a0)        ;7>1
  1024.     move.w    d3,-50(a0)        ;7>1
  1025. grappln.noham8
  1026.  
  1027. grappln.end
  1028.     movem.l    (sp)+,d0-d7/a0-a6
  1029.     rts
  1030.  
  1031.     ;sets palettes to palette-buffer
  1032.     
  1033. grac
  1034.     movem.l    d0-d7/a0-a6,-(sp)
  1035.  
  1036.     lea    curpal1,a3        ;palette 1
  1037.     move.l    #palette,a1
  1038.     bsr.s    gracfrm
  1039.  
  1040.     lea    curpal2,a3        ;palette 2 (dpl)
  1041.     move.l    #16*4+palette,a1
  1042.     bsr.s    gracfrm
  1043.     
  1044.     bsr    palctr            ;palette-buffer to copper
  1045. grac.end
  1046.     movem.l    (sp)+,d0-d7/a0-a6
  1047.     rts
  1048.         
  1049.     ;moves palette from picture to palette-buffer
  1050.  
  1051. gracfrm
  1052.     movem.l    d0-d7/a0-a6,-(sp)
  1053.     tst.l    (a3)            ;palette aanwezig ?
  1054.     beq.s    gracfrm.end
  1055.  
  1056.     move.l    (a3),a2            ;current palette
  1057.     
  1058.     cmp.l    #'PALE',(a2)        ;palette ?
  1059.     bne.s    gracfrm.pict
  1060.     lea    6(a2),a0        ;palette
  1061.     move.w    4(a2),d0        ;aantal kleuren
  1062.     bra.s    gracfrm.col
  1063. gracfrm.pict
  1064.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1065.     bne.s    gracfrm.noanim
  1066.  
  1067.     moveq.l    #0,d1
  1068.     move.w    pic_ani(a2),d1
  1069.     bclr    #7,d1            ;behandelbit weghalen
  1070.  
  1071.     moveq.l    #0,d3
  1072.     move.w    pic_wid(a2),d3
  1073.     lsr.w    #1,d3            ;/2
  1074.     muls    pic_hgt(a2),d3
  1075.     muls    pic_dpt(a2),d3
  1076.  
  1077.     add.l    d3,d3
  1078.  
  1079.     add.l    #pic_raw,d3
  1080.     move.l    d3,d5
  1081.  
  1082.     btst    #0,d1
  1083.     bne.s    gracfrm.buf2
  1084.     moveq.l    #0,d5
  1085. gracfrm.buf2
  1086.     add.l    d5,a2
  1087. gracfrm.noanim
  1088.     lea    pic_pal(a2),a0        ;palette
  1089.     move.w    pic_palnum(a2),d0
  1090.  
  1091.     tst.w    d0            ;0 planes ?
  1092.     beq.s    gracfrm.end
  1093. gracfrm.col
  1094. gracfrm.fa
  1095.     move.l    (a0)+,(a1)+
  1096.     dbra    d0,gracfrm.fa
  1097. gracfrm.end
  1098.     movem.l    (sp)+,d0-d7/a0-a6
  1099.     rts
  1100.     
  1101.     ;handles colorcycling in the palette-buffer
  1102.  
  1103. palcycctr
  1104.     movem.l    d0-d7/a0-a6,-(sp)
  1105.  
  1106.     move.l    curpic1,a2        ;current raw
  1107.     cmp.l    #0,a2
  1108.     beq.s    palcycctr.qb
  1109.     lea    cycdel1,a3        ;cycle delays
  1110.     move.l    #paltab,a4
  1111.     bsr    palcyc
  1112. palcycctr.qb
  1113.     move.l    curpic2,a2        ;current raw
  1114.     cmp.l    #0,a2
  1115.     beq.s    palcycctr.c
  1116.     lea    cycdel2,a3        ;cycle delays
  1117.     move.l    #16*2+paltab,a4
  1118.     bsr    palcyc
  1119. palcycctr.c
  1120.     movem.l    (sp)+,d0-d7/a0-a6
  1121.     rts
  1122.     
  1123.     ;copies palette-buffer to copper
  1124.  
  1125. palctr
  1126.     movem.l    d0-d7/a0-a6,-(sp)
  1127.  
  1128.     lea    gracprcol,a1        ;AGA
  1129.     move.l    #palette,a0
  1130.     move.l    #paltab,a2
  1131.     move.w    #8-1,d6
  1132. palctr.e
  1133.     move.w    #32-1,d7
  1134. palctr.d
  1135.     move.w    (a2)+,d0            ;get cycle-position
  1136.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1137.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1138.     add.l    #4,a1
  1139.     dbra    d7,palctr.d
  1140.     add.l    #((32+2)*4),a1
  1141.     dbra    d6,palctr.e
  1142. palctr.end
  1143.     movem.l    (sp)+,d0-d7/a0-a6
  1144.     rts
  1145.  
  1146.     ;reset palette tabel, for proper color cycling
  1147.  
  1148. paltabres
  1149.     movem.l    d0-d7/a0-a6,-(sp)
  1150.     lea    paltab,a0
  1151.     clr.l    d0
  1152.     move.w    #256-1,d1
  1153. paltabres.a
  1154.     move.w    d0,(a0)+
  1155.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1156.     dbra    d1,paltabres.a
  1157. paltabres.end
  1158.     movem.l    (sp)+,d0-d7/a0-a6
  1159.     rts
  1160.  
  1161.     ;colorcyclinghandling of a palette
  1162.  
  1163. palcyc
  1164.     movem.l    d0-d7/a0-a6,-(sp)
  1165.     move.w    #4-1,d7            ;4 cycles
  1166. palcyc.d
  1167.     tst.w    (a3)+            ;delay klaar ?
  1168.     bne.s    palcyc.c
  1169.     
  1170.     moveq.l    #0,d1
  1171.     move.b    pic_cycstr(a2),d1    ;start color
  1172.     lsl.b    #1,d1        ;*2
  1173.  
  1174.     moveq.l    #0,d2
  1175.     move.b    pic_cycend(a2),d2    ;end color
  1176.     lsl.b    #1,d2        ;*2
  1177.  
  1178.     moveq.l    #0,d3
  1179.     move.b    pic_cycadd(a2),d3    ;richting
  1180.  
  1181.     move.l    a4,a0            ;palette pointer
  1182.     move.l    a0,a1
  1183.     add.l    d1,a0            ;startcolor
  1184.     add.l    d2,a1            ;endcolor
  1185.     
  1186.     cmp.b    #1,d3            ;omhoog
  1187.     beq.s    palcyc.up    
  1188.     cmp.b    #3,d3            ;omlaag
  1189.     beq.s    palcyc.down
  1190.     bra.s    palcyc.i
  1191.  
  1192. palcyc.up                ;kleuren copieren
  1193.     move.w    (a1),d4            ;laatst color bewaren
  1194. palcyc.f                ;kleuren copieren
  1195.     cmp.l    a0,a1
  1196.     beq.s    palcyc.fa
  1197.     move.w    -(a1),2(a1)
  1198.     bra.s    palcyc.f
  1199. palcyc.fa
  1200.     move.w    d4,(a1)
  1201.     bra.s    palcyc.g    
  1202.     
  1203. palcyc.down
  1204.     move.w    (a0),d4            ;laatst color bewaren
  1205. palcyc.h                ;kleuren copieren
  1206.     cmp.l    a0,a1
  1207.     beq.s    palcyc.ha
  1208.     move.w    2(a0),(a0)+
  1209.     bra.s    palcyc.h
  1210. palcyc.ha
  1211.     move.w    d4,(a1)
  1212.  
  1213. palcyc.g
  1214.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1215.     bra.s    palcyc.i
  1216. palcyc.c
  1217.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1218. palcyc.i
  1219.     add.l    #4,a2            ;next cycle info
  1220.     dbra    d7,palcyc.d
  1221.  
  1222. palcyc.qb
  1223.     movem.l    (sp)+,d0-d7/a0-a6
  1224.     rts
  1225.  
  1226.  
  1227.  
  1228. ;    SECTION    variabelen,DATA_c
  1229.  
  1230.     cnop    0,2
  1231. curtsk        dc.l    0
  1232. tskpri        dc.l    0
  1233. duplok        dc.l    0
  1234. inttel        dc.l    0
  1235. intdel        dc.l    0
  1236.  
  1237. form        dc.l    0
  1238. ifffil        dc.l    0
  1239. intvbold    dc.l    0
  1240. inttbeold    dc.l    0
  1241. patpos        dc.l    0
  1242. gfxlib        dc.l    0
  1243. doslib        dc.l    0
  1244. wbview      dc.l    0
  1245. mt_data        dc.l    0
  1246. memvid        dc.l    0
  1247. oldcprlist    dc.l    0
  1248. hogscr        dc.l    vew_hgt
  1249.  
  1250. inspos        dc.l    -1
  1251. anispd1        dc.w    1    ;nooit op 0 !
  1252. anispd2        dc.w    1
  1253.  
  1254.         cnop    0,2
  1255. varclr.s            ;start wissen
  1256. oldrot        dc.l    0
  1257. curpic        dc.l    0
  1258. curfrm        dc.l    0
  1259. cycdel1        ds.w    4
  1260. cycdel2        ds.w    4
  1261.  
  1262. rotinf1        dc.w    0
  1263. rotinf2        dc.w    0
  1264.  
  1265. effspd        dc.w    0
  1266. efflop        dc.b    0
  1267. anilop1        dc.b    0
  1268. anilop2        dc.b    0
  1269. anipal1        dc.b    0
  1270. anipal2        dc.b    0
  1271. rotdpl        dc.b    1
  1272. rottrg        dc.b    0
  1273. dplctr        dc.b    0
  1274.         cnop    0,2
  1275.  
  1276. insdat        ds.l    4
  1277. inspri        dc.l    0
  1278. instel        dc.w    0
  1279.  
  1280. cureff        dc.l    0
  1281. efftel        dc.w    0
  1282.  
  1283. curpal1        dc.l    0
  1284. curpal2        dc.l    0
  1285. currot1        dc.l    0
  1286. currot2        dc.l    0
  1287. curpic1        dc.l    0
  1288. curpic2        dc.l    0
  1289. anitel1        dc.w    0
  1290. anitel2        dc.w    0
  1291. curfrm1        dc.l    0
  1292. curfrm2        dc.l    0
  1293. oldfrm1        dc.l    0
  1294. oldfrm2        dc.l    0
  1295.  
  1296. varclr.e
  1297.         dc.l    0            ;wisruimte
  1298.     
  1299. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1300.     
  1301. ntscmode    dc.b    0
  1302. end        dc.b    0
  1303.  
  1304. pronam    dc.b    'VideoTracker',0
  1305.     cnop    0,2
  1306. dosnam    dc.b    'dos.library',0
  1307.     cnop    0,4
  1308. gfxnam    dc.b    'graphics.library',0
  1309.     cnop    0,4
  1310.     
  1311.     cnop    0,4
  1312. gra.s            ;copperlist edit buffer
  1313. gracprscr
  1314.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1315. gracprbpl
  1316.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1317.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1318. gracprpln
  1319.     dc.w    $e0,$0000,$e2,$0000    ;1
  1320.     dc.w    $e4,$0000,$e6,$0000    ;2
  1321.     dc.w    $e8,$0000,$ea,$0000    ;3
  1322.     dc.w    $ec,$0000,$ee,$0000    ;4
  1323.     dc.w    $f0,$0000,$f2,$0000    ;5
  1324.     dc.w    $f4,$0000,$f6,$0000    ;6
  1325.     dc.w    $f8,$0000,$fa,$0000    ;7
  1326.     dc.w    $fc,$0000,$fe,$0000    ;8
  1327. gracprcol
  1328.     dc.w    $106,$0000
  1329.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1330.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1331.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1332.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1333.     dc.w    $106,$0200
  1334.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1335.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1336.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1337.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1338.  
  1339.     dc.w    $106,$2000
  1340.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1341.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1342.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1343.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1344.     dc.w    $106,$2200
  1345.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1346.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1347.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1348.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1349.  
  1350.     dc.w    $106,$4000
  1351.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1352.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1353.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1354.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1355.     dc.w    $106,$4200
  1356.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1357.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1358.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1359.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1360.  
  1361.     dc.w    $106,$6000
  1362.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1363.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1364.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1365.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1366.     dc.w    $106,$6200
  1367.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1368.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1369.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1370.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1371.  
  1372.     dc.w    $106,$8000
  1373.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1374.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1375.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1376.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1377.     dc.w    $106,$8200
  1378.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1379.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1380.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1381.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1382.  
  1383.     dc.w    $106,$a000
  1384.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1385.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1386.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1387.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1388.     dc.w    $106,$a200
  1389.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1390.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1391.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1392.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1393.  
  1394.     dc.w    $106,$c000
  1395.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1396.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1397.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1398.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1399.     dc.w    $106,$c200
  1400.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1401.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1402.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1403.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1404.  
  1405.     dc.w    $106,$e000
  1406.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1407.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1408.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1409.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1410.     dc.w    $106,$e200
  1411.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1412.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1413.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1414.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1415.  
  1416.     dc.w    $106,$1000
  1417.  
  1418. cprjmp
  1419.     dc.w    $080,0,$082,0
  1420. gra.e
  1421. gra.ql    equ    gra.e-gra.s        ;block lengte
  1422.  
  1423. cpr                    ;real copperlist
  1424.     dc.w    $0001,$fffe
  1425.     dc.w    $09c,$8001        ;tbeint
  1426. cprspr
  1427.     dc.w    $120,$0000,$122,$0000
  1428.     dc.w    $124,$0000,$126,$0000
  1429.     dc.w    $128,$0000,$12a,$0000
  1430.     dc.w    $12c,$0000,$12e,$0000
  1431.     dc.w    $130,$0000,$132,$0000
  1432.     dc.w    $134,$0000,$136,$0000
  1433.     dc.w    $138,$0000,$13a,$0000
  1434.     dc.w    $13c,$0000,$13e,$0000
  1435.  
  1436. cprbuf
  1437.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1438.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1439.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1440.  
  1441.     dc.w    $e0,$0000,$e2,$0000    ;0
  1442.     dc.w    $e4,$0000,$e6,$0000    ;1
  1443.     dc.w    $e8,$0000,$ea,$0000    ;2
  1444.     dc.w    $ec,$0000,$ee,$0000    ;3
  1445.     dc.w    $f0,$0000,$f2,$0000    ;4
  1446.     dc.w    $f4,$0000,$f6,$0000    ;5
  1447.     dc.w    $f8,$0000,$fa,$0000    ;6
  1448.     dc.w    $fc,$0000,$fe,$0000    ;7
  1449.  
  1450.     dc.w    $106,$0000
  1451.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1452.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1453.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1454.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1455.     dc.w    $106,$0200
  1456.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1457.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1458.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1459.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1460.  
  1461.     dc.w    $106,$2000
  1462.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1463.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1464.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1465.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1466.     dc.w    $106,$2200
  1467.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1468.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1469.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1470.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1471.  
  1472.     dc.w    $106,$4000
  1473.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1474.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1475.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1476.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1477.     dc.w    $106,$4200
  1478.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1479.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1480.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1481.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1482.  
  1483.     dc.w    $106,$6000
  1484.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1485.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1486.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1487.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1488.     dc.w    $106,$6200
  1489.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1490.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1491.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1492.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1493.  
  1494.     dc.w    $106,$8000
  1495.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1496.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1497.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1498.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1499.     dc.w    $106,$8200
  1500.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1501.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1502.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1503.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1504.  
  1505.     dc.w    $106,$a000
  1506.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1507.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1508.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1509.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1510.     dc.w    $106,$a200
  1511.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1512.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1513.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1514.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1515.  
  1516.     dc.w    $106,$c000
  1517.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1518.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1519.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1520.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1521.     dc.w    $106,$c200
  1522.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1523.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1524.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1525.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1526.  
  1527.     dc.w    $106,$e000
  1528.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1529.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1530.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1531.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1532.     dc.w    $106,$e200
  1533.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1534.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1535.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1536.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1537.  
  1538.     dc.w    $106,$1000
  1539.  
  1540.     dc.w    $080,0,$082,0
  1541. cprbuf.e
  1542.  
  1543.     dc.w    $088,$0000        ;copjmp2
  1544.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1545. cprbck
  1546. sprdat
  1547.     dc.w    $ffff,$fffe
  1548.  
  1549. palette        ds.l    256        ;palette 24-bits, far out !
  1550. paltab        ds.w    256        ;palette cycle-tabel
  1551.  
  1552.     cnop    0,2
  1553. var    ds.b    $300    ;variabelen voor routines
  1554.  
  1555.     
  1556. ;    SECTION    10,CODE_C
  1557.         endc
  1558.  
  1559. ; this is the routine-source
  1560. ;**********************************************************************
  1561.  
  1562. rotpic_y    equ    288
  1563. rotpic_yp    equ    36
  1564. rotpic_x    equ    48
  1565.  
  1566. ;    Input:
  1567. ;    a0=variabelen tabel
  1568. ;    d0=routinfo
  1569.  
  1570. ;    Output:
  1571. ;    a0=picture
  1572. ;    d1=copperlist
  1573.  
  1574.     SECTION    3,CODE
  1575.  
  1576.     cnop    0,8
  1577. rot
  1578. rotp
  1579.     ifnd    ocs
  1580.     dc.l    'ROTA'
  1581.     endc
  1582.     ifd    ocs
  1583.     dc.l    'ROTO'
  1584.     endc
  1585.  
  1586.     movem.l    d2-d7/a1-a6,-(sp)
  1587.  
  1588.     lea    ($dff000).l,a6        ;hardware
  1589.     lea    rot,a5            ;prog base
  1590.  
  1591.     ifd    rout
  1592.     move.l    #rotc,a2
  1593.     endc
  1594.     move.l    a2,rotchp-rot(a5)
  1595.  
  1596.     sub.l    a1,a1
  1597.     clr.l    d1
  1598.     tst.w    d0
  1599.     beq    rot.c
  1600.     move.l    rotchp-rot(a5),a1
  1601.     add.l    #rotpicemp-rotc,a1
  1602. rot.c    
  1603.     move.l    a1,rotpicvew-rot(a5)
  1604.     
  1605. ;    move.l    #32768,d2
  1606. ;    bsr    getd7
  1607. ;
  1608. ;rot.ea    
  1609. ;    move.l    #4,d2            ;hoogte
  1610. ;    bsr    getd7
  1611. ;    muls    #1380,d7
  1612. ;    move.l    d7,variabele1-rot(a5)
  1613. ;    move.l    #1,d2            ;breedte
  1614. ;    bsr    getd7
  1615. ;    muls    #6,d7
  1616. ;    move.l    d7,variabele7-rot(a5)
  1617.  
  1618. rot.end
  1619.     bsr    rotint            ;eventueel init
  1620.  
  1621.     move.l    var_cprbck(a0),d1
  1622.     sub.l    #8,d1
  1623.     move.l    rotchp-rot(a5),a1
  1624.     add.l    #rotcop1-rotc,a1    ;copperjump adres zetten
  1625.     move.l    rotbuf-rot(a5),d2    ;double buffer
  1626.     add.l    d2,a1
  1627.     move.w    d1,6(a1)
  1628.     swap    d1
  1629.     move.w    d1,2(a1)
  1630.     move.l    a1,a2
  1631.     add.l    #rotcprbck1ntsc,a2
  1632.     move.l    a1,a3
  1633.     add.l    #rotcprend1ntsc,a3
  1634.     move.l    a1,a4
  1635.     add.l    #rotcprbck1,a4
  1636.  
  1637. ;rotcprbck1        equ    (rotcoptus_l*(rotpic_y-124))+8
  1638. ;rotcprbck1ntsc        equ    (rotcoptus_l*(rotpic_y-180))+8
  1639. ;rotcprend1ntsc        equ    (rotcoptus_l*(rotpic_y-60))+8
  1640.  
  1641. cop_str            equ    win_str-2
  1642. rotcprbck1_v        equ    (cop_str+rotpic_y-124)*$1000000+$29fffe
  1643. rotcprbck1ntsc_v    equ    (cop_str+rotpic_y-180)*$1000000+$29fffe
  1644. rotcprend1ntsc_v    equ    (cop_str+rotpic_y-60)*$1000000+$29fffe
  1645.  
  1646.     cmp.b    #50,var_ntsc(a0)    ;ntsc/pal frequence
  1647.     bne    rot.ntsc
  1648.     move.l    #rotcprbck1ntsc_v,(a2)    ;reset ntsc split (cprbck1ntsc)
  1649.     move.l    #rotcprend1ntsc_v,(a3)    ;reset ntsc end (cprend1ntsc)
  1650.     add.l    #rotcprbck1,a1
  1651.     move.l    #rotcprbck1_v,d0    ;pal split (cprbck1)
  1652.     bra    rot.split
  1653. rot.ntsc
  1654.     move.l    #rotcprbck1_v,(a4)    ;reset pal split (cprbck1)
  1655.     move.l    #$00880000,(a3)        ;set ntsc end (cprend1ntsc)
  1656.     add.l    #rotcprbck1ntsc,a1
  1657.     move.l    #rotcprbck1ntsc_v,d0    ;(cprbck1ntsc)
  1658. rot.split
  1659.     move.l    #$00880000,(a1)        ;set break
  1660.     move.l    var_cprbck(a0),a2
  1661.     cmp.b    #$ff,(a2)        ;menu uit ?
  1662.     bne    rot.a
  1663.     move.l    d0,(a1)
  1664. rot.a
  1665.     bsr    rotlop
  1666.  
  1667.     move.l    rotchp-rot(a5),a0
  1668.     add.l    #rotcop1-rotc,a0
  1669.     move.l    rotbuf-rot(a5),d1
  1670.     add.l    a0,d1
  1671.     eor.l    #rotcop_l,rotbuf-rot(a5)
  1672.  
  1673.     move.l    rotpicvew-rot(a5),a0
  1674.     
  1675.     movem.l    (sp)+,d2-d7/a1-a6
  1676.     rts
  1677.  
  1678. getd7
  1679.     move.w    d0,d1
  1680.     divs    d2,d1
  1681.     and.l    #$ffff,d1
  1682.     move.l    d1,d7
  1683.     muls    d2,d1
  1684.     sub.w    d1,d0
  1685.     move.l    d0,d6
  1686.     add.l    #1,d7
  1687.     rts
  1688.  
  1689. rotint
  1690.     movem.l    d0-d7/a0-a6,-(sp)
  1691.  
  1692.     move.l    rotchp-rot(a5),a2
  1693.     add.l    #rotcoptus.s-rotc,a2
  1694.  
  1695.     tst.b    (a2)            ;already filled ?
  1696.     bne    rotint.nocop
  1697.  
  1698. rotint.changed
  1699.     move.l    #cop_str,d1        ;copper y position
  1700.     
  1701.     move.w    #rotpic_y-1,d0        ;number of copperlines
  1702. rotint.a
  1703.     move.b    d1,(a2)
  1704.     add.w    #1,d1
  1705.     add.l    #rotcoptus_l,a2
  1706.     dbra    d0,rotint.a
  1707.     
  1708.     move.l    rotchp-rot(a5),a2
  1709.     add.l    #rotcop1-rotc,a2    ;copy copper1 to copper2
  1710.     move.l    a2,a1
  1711.     add.l    #rotcop_l,a1
  1712.     move.w    #rotcop_l/4-1,d0
  1713. rotint.bb
  1714.     move.l    (a2)+,(a1)+
  1715.     dbra    d0,rotint.bb
  1716.  
  1717. rotint.nocop
  1718.     movem.l    (sp)+,d0-d7/a0-a6
  1719.     rts
  1720.  
  1721. rotlop
  1722.     movem.l    d0-d7/a0-a6,-(sp)
  1723.  
  1724.     move.l    var_pic1(a0),a1        ;picture
  1725.     cmp.l    #0,a1            ;empty ?
  1726.     beq    rotlop.nopic
  1727.  
  1728.     cmp.l    rotbck-rot(a5),a1    ;already on screen ?
  1729.     beq    rotlop.nopic
  1730.  
  1731.     clr.l    d0
  1732.     move.w    pic_wid(a1),d0        ;get width
  1733.     lsl.l    #3,d0            ;*8 for pixelnumber
  1734.  
  1735.     ifnd    ocs
  1736.     sub.w    #16,d0            ;64 pixels aligned
  1737.     endc
  1738.  
  1739.     ifd    ocs
  1740.     move.w    pic_vew(a1),d1
  1741.     btst    #11,d1            ;hold and modify ?
  1742.     beq    rotlop.noham2
  1743.     sub.w    #16,d0            ;64 pixels aligned
  1744. rotlop.noham2
  1745.     endc
  1746.  
  1747.     cmp.w    #rotpic_x,d0        ;good width ?
  1748.     bne    rotlop.nopic
  1749.  
  1750.     clr.l    d1
  1751.     move.w    pic_hgt(a1),d1        ;heigth
  1752.     cmp.w    #rotpic_yp,d1        ;good height ?
  1753.     bne    rotlop.nopic
  1754.  
  1755.     move.l    a1,rotbck-rot(a5)
  1756.     clr.w    rotanicnt-rot(a5)    ;animation restart
  1757.     move.w    var_anispd1(a0),rotanidel-rot(a5)
  1758.     move.b    var_anilop1(a0),rotanilopinp-rot(a5)
  1759.  
  1760. rotlop.nopic
  1761.     tst.l    rotbck-rot(a5)        ;picture available ?
  1762.     beq    rotlop.end
  1763.     move.l    rotbck-rot(a5),a1    ;picture
  1764.  
  1765.     tst.l    var_cols1(a0)        ;colorset ?
  1766.     beq    rotlop.noset
  1767.     move.l    var_cols1(a0),rotcolset-rot(a5)
  1768. rotlop.noset
  1769.  
  1770.     move.l    var_rottrg(a0),a4    ;opnieuw getriggerd ?
  1771.     tst.b    (a4)
  1772.     beq    rotlop.norestart
  1773.     clr.b    (a4)
  1774.  
  1775.     move.w    var_anispd1(a0),rotanidelinp-rot(a5)
  1776.     move.b    var_anilop1(a0),rotanilopinp-rot(a5)
  1777.  
  1778.     clr.w    rotanicnt-rot(a5)    ;animation restart
  1779.     move.w    rotanidelinp-rot(a5),rotanidel-rot(a5)
  1780. rotlop.norestart
  1781.  
  1782.     move.l    rotchp-rot(a5),a4
  1783.     add.l    #6+rotcoptus.s-rotc,a4    ;start copperlist
  1784.     add.l    rotbuf-rot(a5),a4
  1785.     lea    pic_raw(a1),a2        ;start raw planes
  1786.     clr.l    d1
  1787.     move.w    pic_wid(a1),d1
  1788.     muls    pic_hgt(a1),d1
  1789.     muls    pic_dpt(a1),d1
  1790.     clr.l    d0
  1791.     move.w    rotanicnt-rot(a5),d0
  1792.     muls    d0,d1
  1793.     add.l    d1,a2
  1794.  
  1795.     sub.w    #1,rotanidel-rot(a5)
  1796.     tst.w    rotanidel-rot(a5)
  1797.     bne    rotlop.framedelay
  1798.     move.w    rotanidelinp-rot(a5),rotanidel-rot(a5)
  1799.  
  1800.     add.w    #1,d0            ;next frame
  1801.     cmp.w    pic_ani(a1),d0
  1802.     bne    rotlop.loop
  1803.     tst.b    rotanilopinp-rot(a5)
  1804.     beq    rotlop.noloop
  1805.     clr.w    d0            ;overnieuw
  1806.     bra    rotlop.loop
  1807. rotlop.noloop
  1808.     move.w    pic_ani(a1),d0
  1809.     sub.w    #1,d0            ;stoppen aan het eind
  1810. rotlop.loop
  1811.     move.w    d0,rotanicnt-rot(a5)
  1812.  
  1813. rotlop.framedelay
  1814.     move.w    pic_vew(a1),d2
  1815.     btst    #11,d2            ;hold and modify ?
  1816.     beq    rotlop.noham
  1817.  
  1818.     move.w    pic_dpt(a1),d2
  1819.     cmp.b    #6,d2            ;ham6 ?
  1820.     beq    rotlopham6
  1821.  
  1822. rotlop.noham
  1823.     move.w    pic_dpt(a1),d2
  1824.     cmp.b    #5,d2            ;16 colors ?
  1825.     beq    rotlop32
  1826.     cmp.b    #4,d2            ;16 colors ?
  1827.     beq    rotlop16
  1828.     cmp.b    #1,d2            ;2 colors ?
  1829.     beq    rotlop2
  1830.  
  1831.     bra    rotlop.end        ;noy yet available
  1832.  
  1833.  
  1834. rotlopham6                ;hold and modify picture
  1835.     move.l    #(rotpic_x+16)/8,d0
  1836.     clr.l    d3            ;colorvalue
  1837.     move.w    #(rotpic_yp)-1,d1    ;y
  1838. rotlopham6.f
  1839.     move.w    #(rotpic_x)/8,d6    ;x
  1840. rotlopham6.d
  1841.     move.l    #8-1,d7            ;read bits of 1 byte
  1842. rotlopham6.c
  1843.     clr.l    d4            ;colorbits
  1844.     clr.l    d5            ;colorinfo
  1845.  
  1846.     btst    d7,(a2)            ;get colorbits
  1847.     beq    rotlopham6.c0    
  1848.     bset    #0,d4
  1849. rotlopham6.c0    
  1850.     add.l    d0,a2
  1851.     btst    d7,(a2)
  1852.     beq    rotlopham6.c1    
  1853.     bset    #1,d4
  1854. rotlopham6.c1    
  1855.     add.l    d0,a2
  1856.     btst    d7,(a2)
  1857.     beq    rotlopham6.c2
  1858.     bset    #2,d4
  1859. rotlopham6.c2
  1860.     add.l    d0,a2
  1861.     btst    d7,(a2)
  1862.     beq    rotlopham6.c3
  1863.     bset    #3,d4
  1864. rotlopham6.c3
  1865.  
  1866.     add.l    d0,a2            ;get colorinfo
  1867.     btst    d7,(a2)
  1868.     beq    rotlopham6.c4
  1869.     bset    #0,d5
  1870. rotlopham6.c4
  1871.     add.l    d0,a2
  1872.     btst    d7,(a2)
  1873.     beq    rotlopham6.c5
  1874.     bset    #1,d5
  1875. rotlopham6.c5
  1876.  
  1877.     rept    5
  1878.     sub.l    d0,a2
  1879.     endr
  1880.  
  1881.     tst.b    d5            ;true color ?
  1882.     bne    rotlopham6.c00
  1883.  
  1884.     lea    pic_pal(a1),a3        ;palette
  1885.  
  1886.     ifnd    ocs
  1887.     lsl.l    #2,d4
  1888.     endc
  1889.     ifd    ocs
  1890.     lsl.l    #1,d4
  1891.     endc
  1892.  
  1893.     move.w    (a3,d4),d3
  1894.     bra    rotlopham6.e
  1895. rotlopham6.c00
  1896.     cmp.b    #1,d5            ;blue bits ?
  1897.     bne    rotlopham6.c01
  1898.     and.w    #$ff0,d3        ;remove old bits
  1899.     or.w    d4,d3            ;set new bits
  1900.     bra    rotlopham6.e
  1901. rotlopham6.c01
  1902.     cmp.b    #2,d5            ;red bits ?
  1903.     bne    rotlopham6.c02
  1904.     and.w    #$0ff,d3        ;remove old bits
  1905.     lsl.w    #8,d4
  1906.     or.w    d4,d3            ;set new bits
  1907.     bra    rotlopham6.e
  1908. rotlopham6.c02
  1909.     cmp.b    #3,d5            ;green bits ?
  1910.     bne    rotlopham6.c03
  1911.     and.w    #$f0f,d3        ;remove old bits
  1912.     lsl.w    #4,d4
  1913.     or.w    d4,d3            ;set new bits
  1914.     bra    rotlopham6.e
  1915. rotlopham6.c03
  1916.  
  1917. rotlopham6.e
  1918.     cmp.w    #(rotpic_x)/8,d6    ;first byte ?
  1919.     bne    rotlopham6.noskip
  1920.     cmp.w    #5,d7
  1921.     bge    rotlopham6.skip
  1922. rotlopham6.noskip
  1923.     tst.b    d6            ;last byte ?
  1924.     bne    rotlopham6.noskip2
  1925.     cmp.w    #5,d7
  1926.     blt    rotlopham6.endx
  1927. rotlopham6.noskip2
  1928.  
  1929.     move.w    d3,(a4)            ;write pixel to copper
  1930.     move.w    d3,rotcoptus_l(a4)
  1931.     move.w    d3,2*rotcoptus_l(a4)
  1932.     move.w    d3,3*rotcoptus_l(a4)
  1933.     move.w    d3,4*rotcoptus_l(a4)
  1934.     move.w    d3,5*rotcoptus_l(a4)
  1935.     move.w    d3,6*rotcoptus_l(a4)
  1936.     move.w    d3,7*rotcoptus_l(a4)
  1937.     add.l    #4,a4
  1938.  
  1939. rotlopham6.skip
  1940.     dbra    d7,rotlopham6.c        ;next bit
  1941.  
  1942.     add.l    #1,a2
  1943.     dbra    d6,rotlopham6.d        ;next byte
  1944.  
  1945. rotlopham6.endx
  1946.     add.l    #(((rotpic_x+16)/8)*6)-(rotpic_x/8),a2
  1947.     add.l    #(7*rotcoptus_l)+4,a4
  1948.  
  1949.     dbra    d1,rotlopham6.f        ;next row
  1950.     bra    rotlop.end
  1951.     
  1952. rotlop32                ;16 color picture
  1953.     lea    pic_pal(a1),a3        ;palette
  1954.  
  1955.     tst.l    rotcolset-rot(a5)
  1956.     beq    rotlop32.noset
  1957.     move.l    rotcolset-rot(a5),a3
  1958.     lea    6(a3),a3
  1959. rotlop32.noset
  1960.  
  1961.     move.w    #rotpic_yp-1,d1        ;y
  1962. rotlop32.f
  1963.     move.w    #(rotpic_x)/8-1,d6    ;x
  1964. rotlop32.d
  1965.     move.l    #8-1,d7            ;read bits of 1 byte
  1966. rotlop32.c
  1967.     clr.l    d4            ;colorbits
  1968.     btst    d7,(a2)            ;get colorbits
  1969.     beq    rotlop32.c0    
  1970.     bset    #0,d4
  1971. rotlop32.c0    
  1972.  
  1973.     ifnd    ocs
  1974.     btst    d7,((rotpic_x+16)/8)(a2)
  1975.     beq    rotlop32.c1    
  1976.     bset    #1,d4
  1977. rotlop32.c1    
  1978.     btst    d7,2*((rotpic_x+16)/8)(a2)
  1979.     beq    rotlop32.c2
  1980.     bset    #2,d4
  1981. rotlop32.c2
  1982.     btst    d7,3*((rotpic_x+16)/8)(a2)
  1983.     beq    rotlop32.c3
  1984.     bset    #3,d4
  1985. rotlop32.c3
  1986.     btst    d7,4*((rotpic_x+16)/8)(a2)
  1987.     beq    rotlop32.c4
  1988.     bset    #4,d4
  1989. rotlop32.c4
  1990.     lsl.l    #2,d4
  1991.     endc
  1992.  
  1993.     ifd    ocs
  1994.     btst    d7,((rotpic_x)/8)(a2)
  1995.     beq    rotlop32.c1    
  1996.     bset    #1,d4
  1997. rotlop32.c1    
  1998.     btst    d7,2*((rotpic_x)/8)(a2)
  1999.     beq    rotlop32.c2
  2000.     bset    #2,d4
  2001. rotlop32.c2
  2002.     btst    d7,3*((rotpic_x)/8)(a2)
  2003.     beq    rotlop32.c3
  2004.     bset    #3,d4
  2005. rotlop32.c3
  2006.     btst    d7,4*((rotpic_x)/8)(a2)
  2007.     beq    rotlop32.c4
  2008.     bset    #4,d4
  2009. rotlop32.c4
  2010.     lsl.l    #1,d4
  2011.     endc
  2012.  
  2013.     move.w    (a3,d4),d4
  2014.     move.w    d4,(a4)            ;write pixel to copper
  2015.     move.w    d4,rotcoptus_l(a4)
  2016.     move.w    d4,2*rotcoptus_l(a4)
  2017.     move.w    d4,3*rotcoptus_l(a4)
  2018.     move.w    d4,4*rotcoptus_l(a4)
  2019.     move.w    d4,5*rotcoptus_l(a4)
  2020.     move.w    d4,6*rotcoptus_l(a4)
  2021.     move.w    d4,7*rotcoptus_l(a4)
  2022.     add.l    #4,a4
  2023.     dbra    d7,rotlop32.c        ;next bit
  2024.  
  2025.     add.l    #1,a2
  2026.     dbra    d6,rotlop32.d        ;next byte
  2027.  
  2028.     add.l    #(7*rotcoptus_l)+4,a4
  2029.  
  2030.     ifnd    ocs
  2031.     add.l    #(((rotpic_x+16)/8)*4)+2,a2
  2032.     endc
  2033.     ifd    ocs
  2034.     add.l    #(((rotpic_x)/8)*4),a2
  2035.     endc
  2036.     
  2037.     dbra    d1,rotlop32.f        ;next row
  2038.     bra    rotlop.end
  2039.     
  2040. rotlop16                ;16 color picture
  2041.     lea    pic_pal(a1),a3        ;palette
  2042.  
  2043.     tst.l    rotcolset-rot(a5)
  2044.     beq    rotlop16.noset
  2045.     move.l    rotcolset-rot(a5),a3
  2046.     lea    6(a3),a3
  2047. rotlop16.noset
  2048.  
  2049.     move.w    #rotpic_yp-1,d1        ;y
  2050. rotlop16.f
  2051.     move.w    #(rotpic_x)/8-1,d6    ;x
  2052. rotlop16.d
  2053.     move.l    #8-1,d7            ;read bits of 1 byte
  2054. rotlop16.c
  2055.     clr.l    d4            ;colorbits
  2056.     btst    d7,(a2)            ;get colorbits
  2057.     beq    rotlop16.c0    
  2058.     bset    #0,d4
  2059.  
  2060.     ifnd    ocs
  2061. rotlop16.c0    
  2062.     btst    d7,((rotpic_x+16)/8)(a2)
  2063.     beq    rotlop16.c1    
  2064.     bset    #1,d4
  2065. rotlop16.c1    
  2066.     btst    d7,2*((rotpic_x+16)/8)(a2)
  2067.     beq    rotlop16.c2
  2068.     bset    #2,d4
  2069. rotlop16.c2
  2070.     btst    d7,3*((rotpic_x+16)/8)(a2)
  2071.     beq    rotlop16.c3
  2072.     bset    #3,d4
  2073. rotlop16.c3
  2074.     lsl.l    #2,d4
  2075.     endc
  2076.  
  2077.     ifd    ocs
  2078. rotlop16.c0    
  2079.     btst    d7,((rotpic_x)/8)(a2)
  2080.     beq    rotlop16.c1    
  2081.     bset    #1,d4
  2082. rotlop16.c1    
  2083.     btst    d7,2*((rotpic_x)/8)(a2)
  2084.     beq    rotlop16.c2
  2085.     bset    #2,d4
  2086. rotlop16.c2
  2087.     btst    d7,3*((rotpic_x)/8)(a2)
  2088.     beq    rotlop16.c3
  2089.     bset    #3,d4
  2090. rotlop16.c3
  2091.     lsl.l    #1,d4
  2092.     endc
  2093.  
  2094.     move.w    (a3,d4),d4
  2095.     move.w    d4,(a4)            ;write pixel to copper
  2096.     move.w    d4,rotcoptus_l(a4)
  2097.     move.w    d4,2*rotcoptus_l(a4)
  2098.     move.w    d4,3*rotcoptus_l(a4)
  2099.     move.w    d4,4*rotcoptus_l(a4)
  2100.     move.w    d4,5*rotcoptus_l(a4)
  2101.     move.w    d4,6*rotcoptus_l(a4)
  2102.     move.w    d4,7*rotcoptus_l(a4)
  2103.     add.l    #4,a4
  2104.     dbra    d7,rotlop16.c        ;next bit
  2105.  
  2106.     add.l    #1,a2
  2107.     dbra    d6,rotlop16.d        ;next byte
  2108.  
  2109.     add.l    #(7*rotcoptus_l)+4,a4
  2110.     ifnd    ocs
  2111.     add.l    #(((rotpic_x+16)/8)*3)+2,a2
  2112.     endc
  2113.     ifd    ocs
  2114.     add.l    #(((rotpic_x)/8)*3),a2
  2115.     endc
  2116.     dbra    d1,rotlop16.f        ;next row
  2117.     bra    rotlop.end
  2118.     
  2119.  
  2120. rotlop2                    ;2 color picture
  2121.     lea    pic_pal(a1),a3        ;palette
  2122.  
  2123.     tst.l    rotcolset-rot(a5)
  2124.     beq    rotlop2.noset
  2125.     move.l    rotcolset-rot(a5),a3
  2126.     lea    6(a3),a3
  2127. rotlop2.noset
  2128.  
  2129.     move.w    #rotpic_yp-1,d1        ;y
  2130. rotlop2.f
  2131.     move.w    #(rotpic_x)/8-1,d6    ;x
  2132. rotlop2.d
  2133.     move.l    #8-1,d7            ;read bits of 1 byte
  2134. rotlop2.c
  2135.     clr.l    d4            ;colorbits
  2136.     btst    d7,(a2)            ;get colorbits
  2137.     beq    rotlop2.c0    
  2138.     bset    #0,d4
  2139. rotlop2.c0    
  2140.     ifnd    ocs
  2141.     lsl.l    #2,d4
  2142.     endc
  2143.     ifd    ocs
  2144.     lsl.l    #1,d4
  2145.     endc
  2146.  
  2147.     move.w    (a3,d4),d4
  2148.     move.w    d4,(a4)            ;write pixel to copper
  2149.     move.w    d4,rotcoptus_l(a4)
  2150.     move.w    d4,2*rotcoptus_l(a4)
  2151.     move.w    d4,3*rotcoptus_l(a4)
  2152.     move.w    d4,4*rotcoptus_l(a4)
  2153.     move.w    d4,5*rotcoptus_l(a4)
  2154.     move.w    d4,6*rotcoptus_l(a4)
  2155.     move.w    d4,7*rotcoptus_l(a4)
  2156.     add.l    #4,a4
  2157.     dbra    d7,rotlop2.c        ;next bit
  2158.  
  2159.     add.l    #1,a2
  2160.     dbra    d6,rotlop2.d        ;next byte
  2161.  
  2162.     add.l    #(7*rotcoptus_l)+4,a4
  2163.  
  2164.     ifnd    ocs
  2165.     add.l    #2,a2
  2166.     endc
  2167.  
  2168.     dbra    d1,rotlop2.f        ;next row
  2169.     bra    rotlop.end
  2170.     
  2171. rotlop.end
  2172.     movem.l    (sp)+,d0-d7/a0-a6
  2173.     rts
  2174.  
  2175. rotchp        dc.l    0
  2176.  
  2177. rotbuf        dc.l    0
  2178. rotbck        dc.l    0
  2179. rotpicvew    dc.l    0
  2180. rotcolset    dc.l    0
  2181.  
  2182. rotanicnt    dc.w    0
  2183. rotanidel    dc.w    1
  2184. rotanidelinp    dc.w    0
  2185. rotanilopinp    dc.w    0
  2186.  
  2187. rotp.e
  2188.  
  2189.     SECTION    4,CODE_c
  2190.  
  2191.     cnop    0,8
  2192. rotc
  2193.     ifnd    ocs
  2194.     dc.l    'ROTA'
  2195.     endc
  2196.     ifd    ocs
  2197.     dc.l    'ROTO'
  2198.     endc
  2199.     rts
  2200.     
  2201.     ifnd    ocs
  2202. rotpicemp
  2203.     dc.l    'PICT'
  2204.     dc.w    16,16,1,1,0
  2205.     ds.b    8*4
  2206.     dc.l    0
  2207.     ds.b    12
  2208.     dc.w    0
  2209.     ds.l    256
  2210.     ds.b    16*16*1
  2211.     endc
  2212.         
  2213.     ifd    ocs
  2214. rotpicemp
  2215.     dc.l    'PICT'
  2216.     dc.w    16,16,1,1,0
  2217.     ds.b    4*4
  2218.     dc.w    0
  2219.     ds.w    256
  2220.     ds.b    16*16*1
  2221.     endc
  2222.         
  2223. rotcop1
  2224. rotcprjmp
  2225.     dc.w    $80,0,$82,0
  2226. rotcoptus.s
  2227.  
  2228.     dc.w    $0029,$fffe
  2229.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2230.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2231.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2232.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2233.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2234.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2235.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2236.     dc.w    $180,$000,$180,$000,$180,$000
  2237.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2238.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2239.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2240.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2241.     dc.w    $180,$000
  2242.  
  2243. rotcoptus.e
  2244.  
  2245.     rept    rotpic_y-1
  2246.     dc.w    $0029,$fffe
  2247.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2248.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2249.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2250.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2251.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2252.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2253.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2254.     dc.w    $180,$000,$180,$000,$180,$000
  2255.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2256.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2257.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2258.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  2259.     dc.w    $180,$000
  2260.     endr
  2261.  
  2262.     dc.w    $180,$000,$088,$000
  2263.  
  2264. rotcoptus_l    equ    rotcoptus.e-rotcoptus.s
  2265.  
  2266. rotcprbck1        equ    (rotcoptus_l*(rotpic_y-124))+8
  2267. rotcprbck1ntsc        equ    (rotcoptus_l*(rotpic_y-180))+8
  2268. rotcprend1ntsc        equ    (rotcoptus_l*(rotpic_y-60))+8
  2269.  
  2270.     cnop    0,2
  2271.  
  2272. rotcop2
  2273.         ds.b    rotcop2-rotcop1
  2274. rotcop2.e
  2275.  
  2276. rotcop_l    equ    rotcop2-rotcop1
  2277.  
  2278. rotc.e
  2279. rot.e
  2280.  
  2281. ;**********************************************************************
  2282.  
  2283.     ifd    rout
  2284.     cnop    0,8
  2285. rotset    incbin    'w:effectaga/yel.set'
  2286.     cnop    0,8
  2287. rotsrc    incbin    'w:effectaga/countdown_2.anbr'
  2288.     endc
  2289.